package com.liu.json;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.common.base.Strings;
import com.google.common.collect.Lists;

public class Jsons {

    /**
     * Description: <br>
     *
     * @author li.yangqi<br>
     * @taskId <br>
     * @param jsonObject <br>
     * @param key <br>
     * @return <br>
     */
    public static JSONArray getJSONArray(JSONObject jsonObject, String key) {
        if (jsonObject == null || Strings.isNullOrEmpty(key) || !jsonObject.containsKey(key)) {
            return null;
        }

        Object obj = jsonObject.get(key);
        if (obj instanceof JSONArray) {
            return (JSONArray) obj;
        }
        else if (obj instanceof JSONObject) {
            return new JSONArray(Lists.newArrayList(obj));
        }

        return null;
    }

    /**
     * Description: <br>
     *
     * @author li.yangqi<br>
     * @taskId <br>
     * @param jsonObject <br>
     * @param key <br>
     * @return <br>
     */
    public static JSONObject getJSONObject(JSONObject jsonObject, String key) {
        if (jsonObject == null || Strings.isNullOrEmpty(key) || !jsonObject.containsKey(key)) {
            return null;
        }

        Object obj = jsonObject.get(key);
        if (obj instanceof JSONArray) {
            JSONArray array = (JSONArray) obj;
            return array.isEmpty() ? null : array.getJSONObject(0);
        }
        else if (obj instanceof JSONObject) {
            return (JSONObject) obj;
        }

        return null;
    }
//
//    /**
//     * [将Dict中的list数据设置进json对象 <br>
//     *
//     * @author [作者名]<br>
//     * @taskId <br>
//     * @param listName <br>
//     * @param dict <br>
//     * @param jsonObject <br>
//     * @return <br>
//     * @throws BaseAppException <br>
//     */
//    public static JSONObject buildListBOToJson(String listName, DynamicDict dict, JSONObject jsonObject) throws BaseAppException {
//        if (null == jsonObject) {
//            jsonObject = new JSONObject();
//        }
//        int count = dict.getCount(listName);
//        List<HashMap<String, Object>> list = Lists.newArrayList();
//        for (int i = 0; i < count; ++i) {
//            list.add(dict.getBO(listName, i).valueMap);
//        }
//        jsonObject.put(listName, list);
//
//        return jsonObject;
//    }

}
